﻿using MES_SystemUI.Context;
using MES_SystemUI.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace MES_SystemUI.UI.DataDictUI.WorkShops
{
    public partial class ProductionLinesListForm : MES_SystemUI.UI.DataDictUI.DataBaseForm
    {
        public ProductionLinesListForm()
        {
            InitializeComponent();
            this.Load += ProductionLinesListForm_Load;
        }

        private void ProductionLinesListForm_Load(object sender, EventArgs e)
        {
            BindDataGridView();
        }
        public override void GetDataBind()
        {
            using (var ct = new Context.MES_SystemContext())
            {
                var que = from Pl in ct.productionLines.ToList()
                          join Plc in ct.productionLineCategories on Pl.ProductionLineCaregoryId equals Plc.ProductionLineCategorieId
                          join Pt in ct.productionTechnologies on Pl.ProductionTechnologyId equals Pt.ProductionTechnologyId 
                          join Ws in ct.workShops on Pl.WorkShopId equals Ws.WorkShopId
                          join U1 in ct.users on Pl.CreateUserId equals U1.UserId
                          join U2 in ct.users on Pl.LastUpdateUserId equals U2.UserId into AllPc
                          from pc in AllPc.DefaultIfEmpty()
                          select new
                          {
                              序号 = Pl.ProductionLineId,
                              产线名称 = Pl.ProductionLineName,
                              产线类型 = Plc.ProductionLineCategorieName,
                              产线工艺 = Pt.ProductionTechnologyName,
                              所属车间 = Ws.WorkShopName,
                              状态 = Pl.Status == 0 ? "启用" : "禁用",
                              创建人 = U1.UserName,
                              创建时间 = Pl.CreateTime,
                              最后修改人 = pc != null ? pc.UserName : null,
                              最后修改时间 = Pl.LastUpdateTime,
                          };
                if (!string.IsNullOrEmpty(textBox1.Text.Trim()))
                {
                    que = que.Where(x => Regex.IsMatch(x.产线名称, textBox1.Text));
                }
                if (!string.IsNullOrEmpty(dateTimePicker1.Text.Trim()))
                {
                    //DateTime dateTime1 = DateTime.Parse(dateTimePicker1.Value.ToString("yyyy-MM-dd") + " 00:00:00");
                    DateTime dateTime1 = DateTime.Parse(dateTimePicker1.Text + " 00:00:00");
                    que = que.Where(x => x.创建时间 >= dateTime1);
                }
                if (!string.IsNullOrEmpty(dateTimePicker2.Text.Trim()))
                {
                    //DateTime dateTime2 = DateTime.Parse(dateTimePicker2.Value.ToString("yyyy-MM-dd") + " 23:59:59");
                    DateTime dateTime2 = DateTime.Parse(dateTimePicker2.Text + " 23:59:59");
                    que = que.Where(x => x.创建时间 <= dateTime2);
                }
                if (comboBox1.Text != "全部")
                {
                    que = que.Where(x => x.状态 == comboBox1.Text);
                }
                Page = que.Count() % MainForm.SystemDataConfig.pageNumber == 0 ? que.Count() / MainForm.SystemDataConfig.pageNumber : que.Count() / MainForm.SystemDataConfig.pageNumber + 1;
                que = que.OrderByDescending(k => k.序号);
                que = que.Skip((NumberPage - 1) * MainForm.SystemDataConfig.pageNumber).Take(MainForm.SystemDataConfig.pageNumber);
                // 绑定数据
                dataGridView1.Columns.Clear();
                dataGridView1.DataSource = que.ToList();


            }
        }
        public override void OpenExcelCore(DataTable dt, MES_SystemContext c, int i)
        {
            ProductionLine mode = new ProductionLine()
            {
                ProductionLineName = dt.Rows[i][0].ToString(),
                ProductionLineCaregoryId = int.Parse(dt.Rows[i][1].ToString()),
                ProductionTechnologyId = int.Parse(dt.Rows[i][2].ToString()),
                WorkShopId = int.Parse(dt.Rows[i][3].ToString()),
                Status = int.Parse(dt.Rows[i][4].ToString()),
                CreateUserId = int.Parse(dt.Rows[i][5].ToString()),
            };
            c.productionLines.Add(mode);
        }
        public override void StateCore(DataGridViewCellMouseEventArgs e, MES_SystemContext c, int state)
        {
            var Pc = c.productionLines.Find(int.Parse(dataGridView1.Rows[e.RowIndex].Cells["序号"].Value.ToString()));
            Pc.Status = state;
        }
    }
}
